home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Joystick Magazine 1996 May
/
cd joy 71No13.iso
/
pc
/
demos
/
eurosoc
/
source
/
euro_gdv.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1996-03-19
|
6KB
|
219 lines
/**********************************************************************
*
* GDV.CPP
*
*
* Summary: Play a GDV file
*
* Author: Kevin Dudley / Tony Crowther / Graeme Ing
*
* Project: Normality Inc PC
*
* Dated: 1527995 Wednesday 27-9-1995 15:59.
*
**********************************************************************/
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <graph.h>
#include <i86.h>
#include <dos.h>
#include <conio.h>
#include <float.h>
#include <time.h>
#include <math.h>
#include <string.h>
#include "defines.h"
#include "data.equ"
#include "3deng.h"
#include "menu.h"
#include "video.h"
#include "vesa.h"
#include "unmangle.h"
#include "memory.h"
#include "gamedata.h"
#include "config.h"
#include "sos.h"
#include "timer.h"
#include "digi.h"
#include "midi.h"
#include "playdam.h" // Structure Definitions for Digital Video
#include "playcall.h" // Call Defininitions for Digital Video
#include "animlink.h"
#include "calldef.h"
#include "memstruc.h"
#include "rothlink.h"
#include "mallocx.h"
#include "control.h"
#include "eurodefs.h"
#include "euro_fxd.h"
#include "euro.equ"
#include "euro_sym.h"
#include "euro_def.h"
#include "euro_var.h"
#include "euro_grf.h"
#include "euro_dsk.h"
#include "euro_fix.h"
#include "euro_sel.h"
#include "euro_inf.h"
#include "euro_cnt.h"
#include "euro_usr.h"
#include "euro_net.h"
#define GDV_MEM 512*1024
#define GDV_ABORT 0x01
#define GDV_LOOP 0x08
#define DEFAULT_FADEIN 0
#define DEFAULT_FADEOUT 0
#define DEFAULT_DELAYEXIT 25
extern "C" volatile int count;
extern int testVESA;
extern int VESAmode(int *);
extern int gdv_gran;
extern "C" volatile char keys[256];
extern char return_doskey;
extern BYTE palette_buffer[];
extern BYTE work_buffer[768];
extern ModeInfoBlock *vmode_inf;
char out;
BYTE presents[]={
0x3F,0x33,0x00,0x3F,0x33,0x0C,0x3F,0x33,0x19,0x3F,0x3F,0x26,
};
//---------------------------------------------------
long int GDVCallbackRoutine(long int mode,void *header,void *data,short int frame)
//---------------------------------------------------
//********************************************************************************************************************************
// Callback generated by GDV player.
// Test for abort GDV.
//********************************************************************************************************************************
{
// Get_mouse_data(); // reads mouse data and erases last displayed mouse cursor.
//
// StorePSEUDObuffer( &FrontendPseudoDEFN, &FrontendTextureDEFN,
// MOUSE_STOREbuff, MouseXposn, MouseYposn );
// DrawIMAGE( &FrontendPseudoDEFN, &FrontendTextureDEFN, MOUSEimages+NoButton,
// MouseXposn, MouseYposn, NO_BOX, spritecopy );
// AddToDumpList( MouseXposn, MouseYposn, Image_Widths[MOUSEimages+NoButton], Image_Heights[MOUSEimages+NoButton]);
// CopyDumpListToScreen();
// DrawIMAGE( &FrontendPseudoDEFN, &FrontendTextureDEFN, MOUSE_STOREbuff,
// MouseXposn, MouseYposn, NO_BOX, straightcopy );
// AddToDumpList( MouseXposn, MouseYposn, Image_Widths[MOUSEimages+NoButton], Image_Heights[MOUSEimages+NoButton]);
//
if (mode == CBM_LookForAbort && (keys[1]) )
{
ChangeMenu = MAIN;
return(CBX_Abort);
}
else
return(CBX_Normal);
}
//********************************************************************************************************************************
void PlayGDV()
{
char file[128];
unsigned char *mem;
unsigned long int Error;
_PlayAnimBlock PlayBlock = { 0 };
mem=(unsigned char *)mallocx(GDV_MEM); // allocate mem for player
if (mem == 0)
return;
memset( mem, 0, GDV_MEM );
strcpy (file, EuroGDVfile);
PlayBlock.FileName = &file[0];
PlayBlock.Flags = NULL;
PlayBlock.Screen = 0x110;
PlayBlock.ScreenXSize = 640;
PlayBlock.ScreenYSize = 480;
PlayBlock.ScreenGran = 0;
if (SoundCard==0)
PlayBlock.Flags|= PAF_NoAudio;
PlayBlock.CallBack = &GDVCallbackRoutine;
PlayBlock.DrvPath="DIGI\\";
PlayBlock.MemBlock=mem;
PlayBlock.MemBlockSize=GDV_MEM;
if (SoundCard==0)
PlayBlock.Flags|= PAF_NoAudio;
else
PlayBlock.DIGIHandle_SOS=DIGIDriverHandle;
PlayBlock.DriveCap_SOS=&DIGICapabilities;
PlayBlock.SNDID=SoundCard;
PlayBlock.SNDPort=SoundPort;
PlayBlock.SNDIRQ=SoundIRQ;
PlayBlock.SNDDMA=SoundDMA;
PlayBlock.SNDPara=0;
if(!(Error=InitAnim(&PlayBlock)))
{
Error=StartAnim(&PlayBlock);
CloseAnim(&PlayBlock);
}
freex(mem);
}
//********************************************************************************************************************************
// PlaySample routines to link with Tony's ROTH sample stuff!
//********************************************************************************************************************************
extern WORD PlaySample (_SOS_START_SAMPLE *mysample, void (far cdecl*callback)(WORD,WORD,WORD))
{
mysample->lpCallback=(void cdecl (far*)(WORD,WORD,WORD))callback;
return (sosDIGIStartSample( DIGIDriverHandle, mysample));
} /* PlaySample */
extern WORD StopPlaySample (WORD handle)
{
return (sosDIGIStopSample( DIGIDriverHandle, handle));
}
extern WORD ChangeSampleVol (WORD handle,int vol)
{
return (sosDIGISetSampleVolume( DIGIDriverHandle, handle,vol));
}
extern WORD ChangeSamplePan (WORD handle,int pan)
{
return (sosDIGISetPanLocation( DIGIDriverHandle, handle,pan));
}
//********************************************************************************************************************************
void DoStadiumFlythru( char MENU )
{
if ( MENU == VENUE_FLYTHRU && LogicState == RUN_FRONTEND)
PlayGDV();
}
//********************************************************************************************************************************